Make sure regex doesn't stack overflow by limiting it
authorAlbert Astals Cid <aacid@kde.org>
Wed, 26 Mar 2025 10:26:32 +0000 (11:26 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Sat, 6 Jun 2026 09:07:43 +0000 (11:07 +0200)
Origin: https://gitlab.freedesktop.org/poppler/poppler/-/commit/f54b815672117c250420787c8c006de98e8c7408
Bug-Debian: https://bugs.debian.org/1117046
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2025-43718

Happens with very long pdfsubver strings when compiled with
-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -flto=auto

Gbp-Pq: Name Make-sure-regex-doesn-t-stack-overflow-by-limiting-i.patch

poppler/PDFDoc.cc

index 7294d2c6927b8bc9b19091ea31255b499d98f494..3bfbeba25283365e552b14ee11840780f8654332 100644 (file)
@@ -479,7 +479,7 @@ static PDFSubtypePart pdfPartFromString(PDFSubtype subtype, const std::string &p
 
 static PDFSubtypeConformance pdfConformanceFromString(const std::string &pdfsubver)
 {
-    const std::regex regex("PDF/(?:A|X|VT|E|UA)-[[:digit:]]([[:alpha:]]+)");
+    const std::regex regex("PDF/(?:A|X|VT|E|UA)-[[:digit:]]([[:alpha:]]{1,3})");
     std::smatch match;
 
     // match contains the PDF conformance (A, B, G, N, P, PG or U)